<#-- 指令 -->
<#-- 一、条件指令，-->
<#--  1.if elseif else ，注意，elseif else是包在if里面的 -->
<#assign age=19>
<#if age gt 18 >
成年了
<#elseif age==18>
即将成年
<#else>
太小了
</#if>
<#-- 2.switch case break -->
<#assign level="B">
<#switch level>
	<#case "A">
	优秀
	<#break>
	<#case "B">
	很好
	<#break>
</#switch>

<#-- 二、循环指令list，遍历的时候会产生两个内置变量,
		变量名_index ：当前的下标
		变量名_has_next：是否还有下一个值
  -->
<#assign nums=[3,6,5,7,2]>
<#list nums as num>
第${num_index}个:${num},<#if num_has_next>还有下一个</#if>
<#if num_index==2>
<#break><#-- 中断循环 -->
</#if>
</#list>

<#-- 三、包含指令，二者之间可以共享变量，注意应该先定义了才能使用,
	    这里两个模板文件在同一个目录，如果不在同一个目录，可以使用相对路径引入，
	    也可以使用*/004_head.ftl来找项目中的这个文件
-->
<#assign outvar="liuxing">
<#include "004_head.ftl">
${innervar}

<#-- 四、不解析标签指令noparse,类似于XML中CDATA，
		里面的指令会被当做普通文本输出 -->
<#noparse>
	<#assign aaa=4>
	${aaa}
</#noparse>

<#-- 五、压缩指令,会去掉文本中的空格和换行符 -->
<#assign cc="   test \n\n   aa">
${cc}
测试结束
<#compress>
${cc}	
</#compress>
压缩结束

<#-- 六、设置属性指令setting，可以设置语言、本地化等信息
		这里把本地化设置成匈牙利，匈牙利里面小数点会显示成逗号
  -->
<#setting locale="hu"/>
${1.2}

<#-- 七、自定义指令
		可以使用自定义指令把重复的内容进行复用，类似于JAVA里面的方法封装，
		①.自定义指令需要用到两个指令：macro、nested
		②.调用使用<@指令>语法
-->
<#-- 1.不带参数 -->
<#macro zhiling1>
这是自定义指令
</#macro>
<@zhiling1/>

<#-- 2.携带参数，定义的时候，可以给参数默认值，这样就可以不传递这个参数 -->
<#macro zhiling2 name age=80>
我是${name},年龄是${age}
</#macro>
<@zhiling2 name="liuxing" age=30/>

<#-- 3.使用local指令定义局部变量，不能被外面使用，使用assign定义的变量，外部可以使用 -->
<#macro zhiling3>
	<#local i=4>
	${i}
	<#assign mi=6>
</#macro>
<@zhiling3/>
${mi}

<#-- 4.双标签的时候，嵌入标签中的内容，可以重复引用 -->
<#macro zhiling4>
	引入内容，
	第一遍：<#nested>
	第二遍：<#nested>
</#macro>
<@zhiling4>
这是要引入的内容
</@zhiling4>